package discover

type InstanceInfo struct {
	ID                string                     `json:"ID"`                // 服务实例ID=>用于唯一标记服务实例
	Name              string                     `json:"Name"`              // 服务名
	Service           string                     `json:"Service,omitempty"` // 服务发现返回的服务名
	Tags              []string                   `json:"Tags,omitempty"`    // 标签，可用于进行服务过滤
	Address           string                     `json:"Address"`           // 服务实例host
	Port              int                        `json:"Port"`              // 服务实例端口
	Meta              map[string]string          `json:"Meta,omitempty"`    // 元数据
	EnableTagOverride bool                       `json:"EnableTagOverride"` // 是否允许标签覆盖
	Check             `json:"Check,omitempty"`   // 健康检查相关配置
	Weights           `json:"Weights,omitempty"` // 权重
}

type Check struct {
	DeregisterCriticalServiceAfter string   `json:"DeregisterCriticalServiceAfter"` // 多久之后注销服务
	Args                           []string `json:"Args,omitempty"`                 // 请求参数
	HTTP                           string   `json:"HTTP"`                           // 健康检查地址
	Interval                       string   `json:"Interval,omitempty"`             // Consul主动进行健康检查
	TTL                            string   `json:"TTL,omitempty"`                  // 服务实例主动提交建康检查与Interval只存其一
}

type Weights struct {
	Passing int `json:"Passing"`
	Warning int `json:"Warning"`
}

type DisCoverClient struct {
	Host string // Consul的host
	Port int    // Consul端口
}

func NewDiscoverClient(consulHost string, consulPort int) DisCoverClient {
	return &NewDiscoverClient{
		Host: consulHost,
		Port: consulPort,
	}
}
